
#coding:utf-8
#已无力吐槽python， url_encode居然只接受dic形式的参数
#
#     url特殊字符
#     1. +  URL 中+号表示空格 %2B
#     2. 空格 URL中的空格可以用+号或者编码 %20
#     3. /  分隔目录和子目录 %2F
#     4. ?  分隔实际的 URL 和参数 %3F
#     5. % 指定特殊字符 %25
#     6. # 表示书签 %23
#     7. & URL 中指定的参数间的分隔符 %26
#     8. = URL 中指定参数的值 %3D
# repr函数可以获取原始值也就是原始编码
__dic = {
        '+':"%2B",
        ' ':"%20",
        '/':"%20F",
        '?':"%3F",
        '%':"%25",
        '#':"%23",
        '&':"%26",
        '=':"%3D",
        ':':"%3A"
}
__str = r"(\+|\s|/|\?|%|#|&|=|:)+?"

import re
__regex = re.compile(__str)

def custom_url_encode(str):

    repStr = repr(str).replace(r'\x','%')
    repStr = __regex.sub( lambda m: __dic[m.group(0)], repStr)
    return repStr[1:-1]




